import babelpolyfill from 'babel-polyfill'
import Vue from 'vue'
import App from './App'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
//import './assets/theme/theme-green/index.css'
import VueRouter from 'vue-router'
import store from './vuex/store'
import Vuex from 'vuex'
//import NProgress from 'nprogress'
//import 'nprogress/nprogress.css'
import routes from './routes'
// import Mock from './mock'
// Mock.bootstrap();
import 'font-awesome/css/font-awesome.min.css'
//导入axios
import axios from "axios";
Vue.prototype.$http=axios
//全局前缀
axios.defaults.baseURL='http://localhost:8081'
import BaiduMap from 'vue-baidu-map'
Vue.use(BaiduMap, {
  ak: 'xddykLao8E8urweTTSrUKwjctKjwwYWW'
})
Vue.use(ElementUI)
Vue.use(VueRouter)
Vue.use(Vuex)


//NProgress.configure({ showSpinner: false });

const router = new VueRouter({
  routes
})

//前置拦截器，发axios请求前，都会走这个拦截器

axios.interceptors.request.use(
    config => {
      // 从localStorage中获取token
      //先从localStorage中获取token。如果token有值，就将token放到请求头里面
      let token = localStorage.getItem("token");
      // 如果token有值,我们就放到请求头里面
      if (token) {
        config.headers.token = token;
      }
      return config
    },
    error => {
      return Promise.reject(error)
    })


//响应拦截器，即后置拦截器：后端响应的数据回来以后，要先经过后置拦截器，统一处理未登陆的信息
// 比如我们把前端token清除掉，那么需要token才能访问的界面就肯定访问不了了，但是需要让他跳转到登陆界面，就需要后置拦截器
axios.interceptors.response.use(function(response){
  //原先的后置拦截器，即全局map的，最开始的项目
  /*  //对返回的数据进行操作
    let result = response.data;  // response.data 就是后端返给我们的数据
    if(!result.success && result.msg == "NoLogin"){ // 说明未登录,被拦截了,那么就要跳回到登陆页面
        router.push({ path: '/login' });  // 跳转回登陆页面,让用户登陆,这里的login是routes路由中的路径所以小写
    }
    if(!result.success && result.msg == "NoPermission"){ // 说明未登录,被拦截了,那么就要跳回到登陆页面
        router.push({ path: '/403' });  // 跳转回登陆页面,让用户登陆,这里的login是routes路由中的路径所以小写
    }
    return response*/




  let result = response.data;
  if(!result.success && result.msg == "noLogin"){
    alert("当前未登陆，请登录后继续操作")
    router.push({ path: '/login' });
    return "";
  }
  return response;
},function(err){
    return Promise.reject(err)
})


//前端的路由拦截，它会在跳转组件的时候判断是否登陆，这个地方的拦截在前端就已经拦截了，都没有到后端去
//比如我直接在前端把token给清空，那么就会弹出下面alert中的“请登录后再次操作”然后跳转到login
router.beforeEach((to, from, next) => {
  //NProgress.start();
  // if (to.path == '/login') {
  //   localStorage.removeItem('token');//如果是路由到login，那就把token去掉
  //     localStorage.removeItem('user')
  // }
  let token = localStorage.getItem('token');//如果不是路由到login，那就拿到token
  if (!token && to.path != '/login') {
      alert("请登录后再次操作")
      //当没有token，并且还不是路由到login时，说明你没有token还想要访问别的资源，不行！！！给你跳到login
    next({ path: '/login' })
  } else {
    next()
  }
})

//router.afterEach(transition => {
//NProgress.done();
//});

new Vue({
  //el: '#app',
  //template: '<App/>',
  router,
  store,
  //components: { App }
  render: h => h(App)
}).$mount('#app')

